package object;

/**
 * Object是所有类的超类
 * Object中经常被子类重写的两个方法:toString和equals
 */
public class Demo {
    public static void main(String[] args) {
        Point p = new Point(5,6);
        /*
            Object中定义了toString方法，作用是可以将对象转换为一个字符串
            默认转换的格式为:包名.类名@地址
         */
//        String line = p.toString();
//        System.out.println(line);
        /*
            当我们输出一个对象时，实际上控制台上显示的就是该对象toString方法返回的字符串
         */
        System.out.println(p);
        /*
            在java中，任何类型和字符串链接，结果都是字符串。此时会将该类型先转换为字符串
            后再与字符串链接。而转换字符串时也是使用了toString方法
         */
        String line = "对象:"+p;
        System.out.println(line);


        /*
            Object中定义的equals方法作用:判断两个对象的内容是否相等
            对于引用类型变量而言:
            ==是值比较，引用类型变量保存的是地址，因此==相当与比较地址是否相同(是否为同一个对象)
            equals方法用于比较两个对象的内容是否相同(属性值是否一样)，而并不关心是否为同一个对象

            Object的equals方法的默认实现为“==”.因此子类需要使用该方法是要妥善重写。
         */
        Point p2 = new Point(5,6);
        System.out.println("p==p2:"+(p==p2));//false
        System.out.println("p.equals(p2):"+p.equals(p2));//true
    }
}
